Meson: Simplify pkgconfig file generator
authorXavier Claessens <xavier.claessens@collabora.com>
Tue, 24 May 2022 14:30:58 +0000 (10:30 -0400)
committerXavier Claessens <xavier.claessens@collabora.com>
Tue, 24 May 2022 14:30:58 +0000 (10:30 -0400)
Meson knows all private dependencies itself when passing the library as
first positional argument, no need to specify them manually. Also
simplify backend specific files by simply requiring gtk4, just like
unix-print already did.

This should fix generated gtk4-uninstalled.pc, see Meson bug report:
https://github.com/mesonbuild/meson/issues/10415

meson.build

index d78bbc1cd294094ef918c0365c93f6d48ec5fdb8..f46236dadde5758746e34ffdb66509d0caf5056e 100644 (file)
@@ -471,9 +471,6 @@ if not os_win32
   endif
 endif
 
-
-pc_gdk_extra_libs = []
-
 cairo_backends = []
 foreach backend: [ ['cairo-xlib', cairo_req, x11_enabled],
                    ['cairo-win32', cairo_req, win32_enabled],
@@ -604,26 +601,14 @@ if x11_enabled
   cdata.set('HAVE_RANDR15', xrandr15_dep.found())
 endif
 
-if broadway_enabled
-  pc_gdk_extra_libs += ['-lz']
-endif
-
-if macos_enabled
-  pc_gdk_extra_libs += ['-framework Cocoa', '-framework Carbon']
-endif
-
 extra_demo_ldflags = []
 if win32_enabled
-  pc_gdk_extra_libs += ['-lgdi32', '-limm32', '-lshell32', '-lole32']
   if cc.get_id() == 'msvc'
     # Since the demo programs are now built as pure GUI programs, we
     # need to pass in /entry:mainCRTStartup so that they will properly
     # link on Visual Studio builds
     extra_demo_ldflags = ['/entry:mainCRTStartup']
-  else
-    pc_gdk_extra_libs += ['-Wl,-luuid']
   endif
-  pc_gdk_extra_libs += ['-lwinmm', '-ldwmapi', '-lsetupapi', '-lcfgmgr32', '-lhid']
 
   # Check whether libepoxy is built with EGL support on Windows
 endif
@@ -841,16 +826,7 @@ gsk_private_packages = [] # all already in gdk_private_packages
 pangoft2_pkgs = (wayland_enabled or x11_enabled) ? ['pangoft2'] : []
 gtk_private_packages = pangoft2_pkgs
 
-gdk_extra_libs = pc_gdk_extra_libs
-gsk_extra_libs = []
-gtk_extra_libs = []
-
-gdk_extra_cflags = []
-gsk_extra_cflags = []
-gtk_extra_cflags = []
-
-pkgs = [ 'gtk4' ]
-
+pkgs = []
 pkg_targets = []
 display_backends = []
 foreach backend: [ 'broadway', 'macos', 'wayland', 'win32', 'x11', ]
@@ -867,18 +843,23 @@ common_pc_variables = [
   'gtk_host=@0@-@1@'.format(host_machine.cpu_family(), host_machine.system()), # FIXME
 ]
 
+pkg_config.generate(libgtk,
+  filebase: 'gtk4',
+  unescaped_variables: common_pc_variables,
+  name: 'GTK',
+  description: 'GTK Graphical UI Library',
+  requires: gdk_packages + gsk_packages + gtk_packages,
+  subdirs: ['gtk-@0@'.format(gtk_api_version)],
+)
+meson.override_dependency('gtk4', libgtk_dep)
+
 foreach pkg: pkgs
   pkg_config.generate(
     filebase: pkg,
     unescaped_variables: common_pc_variables,
     name: 'GTK',
     description: 'GTK Graphical UI Library',
-    requires: gdk_packages + gsk_packages + gtk_packages,
-    requires_private: gdk_private_packages + gsk_private_packages + gtk_private_packages,
-    libraries: ['-L${libdir}', '-lgtk-4'],
-    libraries_private: gdk_extra_libs + gsk_extra_libs + gtk_extra_libs,
-    subdirs: ['gtk-@0@'.format(gtk_api_version)],
-    extra_cflags: gdk_extra_cflags + gsk_extra_cflags + gtk_extra_cflags,
+    requires: 'gtk4',
   )
   meson.override_dependency(pkg, libgtk_dep)
 endforeach
@@ -889,10 +870,10 @@ if os_unix
     unescaped_variables: common_pc_variables,
     name: 'GTK',
     description: 'GTK Unix print support',
-    requires: ['gtk4'] + gtk_packages,
-    libraries: [],
+    requires: 'gtk4',
     subdirs: ['gtk-@0@/unix-print'.format(gtk_api_version)],
   )
+  meson.override_dependency('gtk4-unix-print', libgtk_dep)
 endif
 
 subdir('po')